This invention relates to the reduction of executable program sizes. Specifically, this invention describes a method and apparatus for creating and deploying smaller Microsoft Windows applications for automatic configuration of a computer device.
The increasing use of computers in collecting and distributing information has revealed various problems with the typical collection and distribution channels. For example, one current software distribution system enables the software vendor to provide a number of users with software over a network. The system also enables the vendor to update and maintain the software at the request of the users and to enable the users to acquire software at the users"" requests from different software vendors over the network. However, such a system only provides software and related services at the request of the user, without considering the user""s requirements or preferences. As a result, the system is not optimized for the user""s specific needs and/or preferences.
Normally, computer systems are shipped to users without any bundled software. When computer manufacturers want to add software packages to increase a system""s perceived end-user value, increased configuration time and expense is created as each additional software package must be installed and tested during the assembly process of the system. To save time, a manufacturer might pre-configure such components of a system such as the hard disk drive. However, the manufacturer must be concerned with inventory costs and wasted configuration time if a change is necessary in the installed software.
One possible solution would be to include software on a separate media such as floppy discs or optical discs (CD-ROM or DVD-ROM). This additional software may then be installed by the user onto the computer system. However, this solution would require the user to spend time installing the software, and create additional customer support issues if the user cannot install the software correctly. In addition, the user may choose not to install one or more of the applications intended for installation by the manufacturer, such as demonstration software or other software used for advertising.
One other possible solution might be possible for the manufacturer to place software in the computer system that automatically loads at the start-up of the computer and then installs additional applications. The software may unobtrusively download the additional applications from a network, and install them. Also, the software must be as small as possible to minimize use of the resources of the computer hardware.
Currently, the smallest executable programs obtainable under the 32-bit versions of the operating systems marketed by Microsoft Corporation (e.g., Windows 95(trademark), Windows 98(trademark), and Windows NT(trademark), collectively referred to as xe2x80x9cWindowxe2x80x9d), is approximately 8 kilobytes (K) in size when compiled using a compiler such as Visual C++, Version 5, marketed by Microsoft Corporation. However, this is assuming no functionality and with all debugging support removed. Thus, to obtain any functionality or provide debugging capabilities, the size of the program would be increased. Although the size of the compiled application varies depending on factors such as the specific compiler used and the file type, even the smallest achievable compiled size for an application is still comparably large.
Given the requirements of having a Windows application of less than the minimum size currently obtainable by using the executable program format, and be able to start up automatically at Windows startup without modifying the Windows system registry, the standard Windows executable file format cannot be used.
Accordingly, there is a need in the technology for a method and apparatus for creating smaller Microsoft Windows applications that is executable at start-up and does not require the modification of Windows to be compatible.
A method including creating an executable program in accordance with a Windows Control Panel Language (CPL) format; storing the executable program in a first non-volatile memory; transferring the executable program from the first non-volatile memory to a second non-volatile memory; and, configuring an operating system to start-up the executable program after the operating system has completed booting.